#include <stdio.h>
#include "ts_list.h"
#include "ts_sec.h"

void TSELEM_insert_data(LIST *ts_list) {
	TSELEM  *ts_elem ;
	PRGELEM *prg_elem;
	ESELEM  *es_elem ;

	int pmt_pid = 100, pcr_pid = 500, a_v_pid = 200;
	int i, j;

	if (!ts_list) return;

	TSELEM_LIST_add(ts_list, (ts_elem = TSELEM_malloc()));
	if (!ts_elem) return;

	// 循环生成1000套节目
	for (i = 1; i <= 1000; i++) {
		PRGELEM_LIST_add(&ts_elem->prg_list, (prg_elem = PRGELEM_malloc(i, 1, "CCTV", ++pmt_pid, pcr_pid++)));
		if (!prg_elem) continue;

		for (j = 1; j <= 3; j++) {
			ESELEM_LIST_add(&prg_elem->es_list, (es_elem = ESELEM_malloc(j, ++a_v_pid)));
			if (!es_elem) continue;
		}
	}
}


/*
生成ts文件:
1.生成 PAT,PMT,SDT 表
    2.共100套节目(名称从 CCTV001 到 CCTV100, 提供商全为 CCTV)
    3.节目号   从 1   到 100
      pmt_pid 从 101 到 200
      每套节目有3个音视频pid(type值从1到3); 音视频从 201,202,203,204,205...
*/
int main() {
	// 初始化
	LIST ts_list;
	TSELEM_LIST_init(&ts_list);

	// 测试数据的插入
	TSELEM_insert_data(&ts_list);

	// 段生成表=>包
	TSSEC_make_table(&ts_list);

	// 写文件
	TSELEM_LIST_write_file(&ts_list, 0, "mux_demo.ts");

	TSELEM_LIST_free(&ts_list);

	return 0;
}
